package day12.file;

import java.io.*;

/*本类用于测试文件的读取 D:\\ready\\1.txt*/
public class TestIn {
    public static void main(String[] args) {
        method();//字节流的读取InputStream
        method2();//高效字节流的读取
    }
    private static void method() {
        //报错:原因:InputStream是字节输入流的抽象父类,不能实例化
        //InputStream in = new InputStream();
        //1.创建字节流的读取对象,并try-catch处理
        /*try-catch:try中放的是可能会发生异常的代码
        * catch匹配并捕获异常,如果捕获到异常,就去解决*/
        try {
            InputStream in = new FileInputStream(
                    new File("D:\\ready\\1.txt"));
            //2.开始读取read()每次读取一个字节,如果读取到了数据的末尾,返回-1
//            System.out.println( in.read() );//97
//            System.out.println( in.read() );//98
//            System.out.println( in.read() );//99
//            System.out.println( in.read() );//-1

            //3.需求:可以利用循环重复读取文件中的所有字节
            //3.1定义变量,记录读取到的数据
            int b ;
            //3.2循环读取数据,只要不是-1,就继续循环
            while((b = in.read()) != -1){
                //3.3打印本次读取到的字节
                System.out.println(b);
            }
            //4.释放资源
            in.close();
        } catch (Exception e) {
            e.printStackTrace();//打印错误信息
        }
    }
    private static void method2() {
        //1.创建高效的字节流读取对象
        try {
//            InputStream in1 = new BufferedInputStream(
//                    new FileInputStream(new File("D:\\ready\\1.txt"));
            InputStream in2 = new BufferedInputStream(
                    new FileInputStream("D:\\ready\\1.txt"));
            //2.开始读取read()每次读取一个字节,如果读取到了数据的末尾,返回-1
//            System.out.println( in2.read() );//97
//            System.out.println( in2.read() );//98
//            System.out.println( in2.read() );//99
//            System.out.println( in2.read() );//-1

            //3.需求:可以利用循环重复读取文件中的所有字节
            //3.1定义变量,记录读取到的数据
            int b ;
            //3.2循环读取数据,只要不是-1,就继续循环
            while((b = in2.read()) != -1){
                //3.3打印本次读取到的字节
                System.out.println(b);
            }
            //4.释放资源
            in2.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }


}
